void WriteImage(fname, fimage, M, N, Q)
char fname [100];
int **fimage;
int  M, N, Q;
{
 int i, j;
 unsigned char *image;
 FILE  *fd;

 image = (unsigned char *) malloc( (M*N) * sizeof(unsigned char));

 for(i=0; i<N; i++)
   for(j=0; j<M; j++)
     image[i*M+j]=(unsigned char)fimage[i][j];

 if ((fd=fopen(fname,"w")) == NULL) {
   fprintf(stderr,"Can't output %s.\n",fname);
   exit(0);
 }

 fprintf(fd,"P5\n");
 fprintf(fd,"%d %d\n", M, N);
 fprintf(fd,"%d\n", Q);
  
 if (fwrite(image, M*N, 1, fd) != 1) {
   fprintf(stderr,"Can't write image %s.\n",fname);
   exit(0);
 }

 free(image);

 fclose(fd);

}
